package com.tiantian.novel.helper;

import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * PinYin utils
 *
 * @author wangkai
 * @since 2020/12/18.
 */
public class PinYinUtil {
    private static final Logger log = LoggerFactory.getLogger(PinYinUtil.class);

    /**
     * 获取汉字串拼音的首字母缩写，英文字符不变
     *
     * @param str 汉字串
     * @return 汉语拼音
     */
    public static String getShortPinYin(String str) {
        StringBuffer sb = new StringBuffer();
        char[] arr = str.toCharArray();
        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
        //转换类型（大写or小写）
        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
        //定义中文声调的输出格式
        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
        //定义字符的输出格式
        defaultFormat.setVCharType(HanyuPinyinVCharType.WITH_U_AND_COLON);
        for (int i = 0; i < arr.length; i++) {
            //判断是否是汉子字符
            if (arr[i] > 128) {
                try {
                    //全拼
//                    sb.append(PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]);
                    //首字母缩写
                    sb.append((PinyinHelper.toHanyuPinyinStringArray(arr[i], defaultFormat)[0]).charAt(0));
                } catch (Exception e) {
                    sb.append("_");
                }
            } else {
                // 如果不是汉字字符，直接拼接
                sb.append(arr[i]);
            }
        }
        return sb.toString();
    }
}
